<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script src="./script/0validatorStartEnd.js"></script>
  <script src="./script/1validatorBrackets.js"></script>
  <script src="./script/2validatorEquel.js"></script>
  <script src="./script/3validatorBracketsRight.js"></script>
  <script src="./script/4validatorContent.js"></script>
  <script src="./script/isCoefficient.js"></script>
  <script src="./script/findone.js"></script>
  <script src="./script/getNeedItem.js"></script>
  <script src="./script/isCoefficient.js"></script>
  <script src="./script/validatorPersentSign.js"></script>
  <script>
    function validator(str) {
      // 先将中文的括号替换成英文的， 并去掉所有空格
      str = str.replace(/（/g, '(').replace(/）/g, ')')
      str = str.replace(/\s/g, '')
      if (str.length == 0) {
        alert('请输入公式')
        return
      }
      // 0.校验内容 首尾
      const validator1 = validatorStartEnd(str)
      if (validator1.hasErr) {
        alert(validator1.errCon)
        return
      }
      // 1.校验括号正确性
      const validator2 = validatorBrackets(str)
      if (!validator2) {
        alert('校验括号错误')
        return
      }
      // 2.检测有 = 号，报错提示
      let validator3 = validatorEquel(str)
      if (!validator3) {
        alert('不允许出现 = 请修改')
        return
      }
      // 3 右括号右侧是汉字，说明缺少运算符，报错
      // 北京（北京地区）系数 这种事错误的
      const validator4 = validatorBracketsRight(str)
      if (validator4.hasErr) {
        alert(`${validator4.errCon} 的前面需要运算符`)
        return
      }
      // 4.校验内容是否正确完整
      let data = validatorContent(str)
      console.log('最终的结果', data);
      if (data === undefined) {
        // 出问题了，直接return
        return
      } else {
        // data 有内容， 需要eval一下看是否报错
        try {
          console.log(eval(data.result))
        } catch (e) {
          console.log('****', e);
        }
      }
    }

    let str = '(((壹杯加+系数(北京地区))+车险传统续保净保费))-泷千家(天山西路店)'
    // let str = '(系数(北京地区))+系数(北京地区)+车险传统续保净保费-泷千家(天山西路店)'
    // let str = '(系数(北京地区))'
    validator(str)
  </script>
</body>

</html>